package chapter02.part07;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 替换匹配
 * 
 * @author insight
 * @since 2021/8/28
 */
public class ReplaceMatch {
    public static void main(String[] args) {
        // repalce 系列方法 把匹配的内容替换掉
        String patternStr = "(([1-9]|1[0-2]):([0-5][0-9]))[ap]m";
        String input = "11:59am, 12:06pm";

        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher(input);
        
        // 替换第一处
        String ret = matcher.replaceFirst("#");
        System.out.println(ret);

        // 替换成对群组的引用
        System.out.println(matcher.replaceFirst("$3"));
        // 取消特殊符号的作用
        System.out.println(matcher.replaceFirst(Matcher.quoteReplacement("$")));
        
        // 复杂操作 比如把单词替换成至少4个字母大写
        // 使用 lambda 提供一个函数
        String ret2 = Pattern.compile("\\pL{4,}")
                .matcher("Mary had a little lamb")
                .replaceAll(m -> m.group().toUpperCase());
        System.out.println(ret2);
    }
}